<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.opengis.net/wcs" xmlns="http://www.opengis.net/wcs"
    xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified"
    attributeFormDefault="unqualified" xml:lang="en" version="1.0.2 2010-02-01">
    <xs:annotation>
        <xs:appinfo>wcsCapabilities.xsd v1.0.2 2010-02-01</xs:appinfo>
        <xs:documentation>This schema defines the Capabilities operation request and reply XML
            elements and types used by an OGC Web Coverage Service (WCS). This schema with the
            schemas it uses are believed to be GML Application Schemas. </xs:documentation>
        <xs:documentation>
            WCS is an OGC Standard.
            Copyright (c) 2003,2010 Open Geospatial Consortium, Inc. All Rights Reserved.
            To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
        </xs:documentation>
        <xs:documentation>AEW 03/07/22 Changes made: Changed element name "Section" to "section" in
            GetCapabilities Added documentation elements in GetCapabilities,
            CapabilitiesSectionType, ContentMetadata, AbstractDescriptionBaseType,
            AbstractDescriptionType Expanded documentation of WCS_CapabilitiesType Moved
            documentation from Service to ServiceType Edited documentation of OnlineResourceType,
            electronicMailAddress in AddressType Expanded separator comment before ContentMetadata
            elements and types Added separator comment before CoverageOfferingBrief Moved
            metadataLink from AbstractDescriptionType to AbstractDescriptionBaseType </xs:documentation>
        <xs:documentation>in CoverageOfferingBrief, replaced boundedBy with a new lonLatBoundingBox
            (added to owsBase.xsd); and made temporal domain of type TimeSequenceType.</xs:documentation>
        <xs:documentation>AEW 03/07/29 Changes made: Changed optionality and documentation os "fees"
            and accessConstraints" elements in ServiceType Changed reference to gml:description to
            reference to (wcs:)description in AbstractDescriptionBaseType </xs:documentation>
        <xs:documentation>AEW 03/07/30 Changes made: Added "version" and "updateSequence" attributes
            to ServiceType, WCSCapabilityType, and ContentMetadata </xs:documentation>
        <xs:documentation>JDE 03/07/30 - Added "version" and "updateSequence" attributes to
            WCS_Capabilities type 03/08/27 - Made "version" attribute required </xs:documentation>
        <xs:documentation>AEW 04/07/13 Changes made: Added declaration of the "xlink" namespace. In
            wcs:AbstractDescriptionType, added the elements wcs:description and wcs:name, and the
            attribute "gml:id" with use="prohibited". </xs:documentation>
        <xs:documentation>AEW 05/07/18 Changes made: Changed documentation of updateSequence
            attribute in GetCapabilities element, WCS_CapabilitiesType, ServiceType,
            WCSCapabilityType, and ContentMetadata element. Added documentation of all enumeration
            values in CapabilitiesSectionType. Added documentation of WCSCapabilityType,
            DCPTypeType, CoverageOfferingBriefType, and AbstractDescriptionType. </xs:documentation>
        <xs:documentation>JDE 2005/08/31 Changes made: AbstractDescriptionBaseType: made
            metadataLink repeatable </xs:documentation>
    </xs:annotation>
    <!-- ==============================================================       includes and imports	============================================================== -->
    <xs:include schemaLocation="./owsBase.xsd"/>
    <xs:import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/wcs/1.0.0/gml4wcs.xsd"/>
    <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="../../../w3c/1999/xlink.xsd"/>
    <!-- ==============================================================       elements and types	============================================================== -->
    <xs:element name="GetCapabilities">
        <xs:annotation>
            <xs:documentation>Request to a WCS to perform the GetCapabilities operation. In this XML
                encoding, no "request" parameter is included, since the element name specifies the
                specific operation. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="section" type="CapabilitiesSectionType" default="/" minOccurs="0"
                />
            </xs:sequence>
            <xs:attribute name="service" type="xs:string" use="required" fixed="WCS"/>
            <xs:attribute name="version" type="xs:string" use="optional" fixed="1.0.0"/>
            <xs:attribute name="updateSequence" type="xs:string" use="optional">
                <xs:annotation>
                    <xs:documentation>Service metadata (Capabilities) document version, having
                        values that are "increased" whenever any change is made in service metadata
                        document. Values are selected by each server, and are always opaque to
                        clients. When omitted or not supported by server, server shall return latest
                        complete service metadata document. </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <!-- =========================================================== -->
    <xs:simpleType name="CapabilitiesSectionType">
        <xs:annotation>
            <xs:documentation>Identification of desired part of full Capabilities XML document to be
                returned. </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="/">
                <xs:annotation>
                    <xs:documentation>TBD. </xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="/WCS_Capabilities/Service">
                <xs:annotation>
                    <xs:documentation>TBD. </xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="/WCS_Capabilities/Capability">
                <xs:annotation>
                    <xs:documentation>TBD. </xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="/WCS_Capabilities/ContentMetadata">
                <xs:annotation>
                    <xs:documentation>TBD. </xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <!-- =========================================================== -->
    <xs:element name="WCS_Capabilities" type="WCS_CapabilitiesType"/>
    <!-- =========================================================== -->
    <xs:complexType name="WCS_CapabilitiesType">
        <xs:annotation>
            <xs:documentation>Metadata for a WCS server, also known as Capabilities document. Reply
                from a WCS that performed the GetCapabilities operation. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element ref="Service"/>
            <xs:element ref="Capability"/>
            <xs:element ref="ContentMetadata"/>
        </xs:sequence>
        <xs:attribute name="version" type="xs:string" use="required" fixed="1.0.0"/>
        <xs:attribute name="updateSequence" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Service metadata (Capabilities) document version, having values
                    that are "increased" whenever any change is made in service metadata document.
                    Values are selected by each server, and are always opaque to clients. When
                    supported by server, server shall return this attribute. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <!-- =============================================================		Service elements and types 	============================================================== -->
    <xs:element name="Service" type="ServiceType" substitutionGroup="gml:_GML"/>
    <!-- =========================================================== -->
    <xs:complexType name="ServiceType">
        <xs:annotation>
            <xs:documentation>A minimal, human readable rescription of the service.
            </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="AbstractDescriptionType">
                <xs:sequence>
                    <xs:element ref="keywords" minOccurs="0" maxOccurs="unbounded"/>
                    <xs:element name="responsibleParty" type="ResponsiblePartyType" minOccurs="0"/>
                    <xs:element name="fees" type="gml:CodeListType">
                        <xs:annotation>
                            <xs:documentation>A text string identifying any fees imposed by the
                                service provider. The keyword NONE shall be used to mean no fees.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="accessConstraints" type="gml:CodeListType"
                        maxOccurs="unbounded">
                        <xs:annotation>
                            <xs:documentation>A text string identifying any access constraints
                                imposed by the service provider. The keyword NONE shall be used to
                                mean no access constraints are imposed. </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="version" type="xs:string" use="optional" fixed="1.0.0"/>
                <xs:attribute name="updateSequence" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Service metadata (Capabilities) document version, having
                            values that are "increased" whenever any change is made in service
                            metadata document. Values are selected by each server, and are always
                            opaque to clients. When supported by server, server shall return this
                            attribute. </xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="ResponsiblePartyType">
        <xs:annotation>
            <xs:documentation>Identification of, and means of communication with, person(s) and
                organizations associated with the server. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice>
                <xs:sequence>
                    <xs:element name="individualName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Name of the responsible person-surname, given name,
                                title separated by a delimiter. </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="organisationName" type="xs:string" minOccurs="0"/>
                </xs:sequence>
                <xs:element name="organisationName" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>Name of the responsible organizationt. </xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
            <xs:element name="positionName" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Role or position of the responsible person.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="contactInfo" type="ContactType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Address of the responsible party. </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="ContactType">
        <xs:annotation>
            <xs:documentation>Information required to enable contact with the responsible person
                and/or organization. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="phone" type="TelephoneType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Telephone numbers at which the organization or individual may
                        becontacted. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="address" type="AddressType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Physical and email address at which the organization or
                        individualmay be contacted. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="onlineResource" type="OnlineResourceType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>On-line information that can be used to contact the individual
                        ororganization. </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="OnlineResourceType">
        <xs:annotation>
            <xs:documentation>Reference to on-line resource from which data can be obtained.
            </xs:documentation>
        </xs:annotation>
        <xs:attributeGroup ref="xlink:simpleAttrs"/>
    </xs:complexType>
    <!-- ========================================================== -->
    <xs:complexType name="TelephoneType">
        <xs:annotation>
            <xs:documentation>Telephone numbers for contacting the responsible individual or
                organization. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="voice" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Telephone number by which individuals can speak to the
                        responsible organization or individual. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="facsimile" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Telephone number of a facsimile machine for the
                        responsibleorganization or individual. </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="AddressType">
        <xs:annotation>
            <xs:documentation>Location of the responsible individual or organization.
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="deliveryPoint" type="xs:string" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Address line for the location (as described in ISO 11180,
                        Annex A). </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="city" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>City of the location. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="administrativeArea" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>State ot province of the location. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="postalCode" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>ZIP or other postal code. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="country" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Country of the physical address. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="electronicMailAddress" type="xs:string" minOccurs="0"
                maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Address of the electronic mailbox of the responsible
                        organization or individual. </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!-- =============================================================		WCSCapabilityType types and elements 	============================================================== -->
    <xs:element name="Capability" type="WCSCapabilityType"/>
    <xs:complexType name="WCSCapabilityType">
        <xs:annotation>
            <xs:documentation>XML encoded WCS GetCapabilities operation response. The Capabilities
                document provides clients with service metadata about a specific service instance,
                including metadata about the coverages served. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Request">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="GetCapabilities">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="DCPType" type="DCPTypeType"
                                        maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="DescribeCoverage">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="DCPType" type="DCPTypeType"
                                        maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="GetCoverage">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="DCPType" type="DCPTypeType"
                                        maxOccurs="unbounded"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Exception">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Format" type="xs:string" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="VendorSpecificCapabilities" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:any/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="version" type="xs:string" use="optional" fixed="1.0.0"/>
        <xs:attribute name="updateSequence" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Service metadata document version, having values that are
                    "increased" whenever any change is made in service metadata document. Values are
                    selected by each server, and are always opaque to clients. When not supported by
                    server, server shall not return this attribute. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="DCPTypeType">
        <xs:annotation>
            <xs:documentation>Connect point URLs for the HTTP Distributed Computing Platform (DCP).
                Normally, only one Get and/or one Post is included in this element. More than one
                Get and/or Post is allowed to support including alternative URLs for uses such as
                load balancing or backup. </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="HTTP">
                <xs:complexType>
                    <xs:choice maxOccurs="unbounded">
                        <xs:element name="Get">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="OnlineResource" type="OnlineResourceType"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Post">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="OnlineResource" type="OnlineResourceType"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <!-- =============================================================		ContentMetadata elements and types		=========================================================== -->
    <xs:element name="ContentMetadata">
        <xs:annotation>
            <xs:documentation>Unordered list of brief descriptions of all coverages avaialble from
                this WCS, or a reference to another service from which this information is
                available. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="CoverageOfferingBrief" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attributeGroup ref="gml:AssociationAttributeGroup"/>
            <xs:attribute name="version" type="xs:string" use="optional" fixed="1.0.0"/>
            <xs:attribute name="updateSequence" type="xs:string" use="optional">
                <xs:annotation>
                    <xs:documentation>Service metadata document version, having values that are
                        "increased" whenever any change is made in service metadata document. Values
                        are selected by each server, and are always opaque to clients. When not
                        supported by server, server shall not return this attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <!-- =========================================================== -->
    <xs:element name="CoverageOfferingBrief" type="CoverageOfferingBriefType"
        substitutionGroup="gml:_GML"/>
    <!-- =========================================================== -->
    <xs:complexType name="CoverageOfferingBriefType">
        <xs:annotation>
            <xs:documentation>Brief description of one coverage avaialble from a WCS.
            </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="AbstractDescriptionType">
                <xs:sequence>
                    <xs:element ref="lonLatEnvelope"/>
                    <xs:element ref="keywords" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="AbstractDescriptionBaseType" abstract="true">
        <xs:annotation>
            <xs:documentation>Description of a WCS object. </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:restriction base="gml:AbstractGMLType">
                <xs:sequence>
                    <xs:element ref="metadataLink" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:restriction>
        </xs:complexContent>
    </xs:complexType>
    <!-- =========================================================== -->
    <xs:complexType name="AbstractDescriptionType" abstract="true">
        <xs:annotation>
            <xs:documentation>Human-readable descriptive information for the object it is included
                within.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="AbstractDescriptionBaseType">
                <xs:sequence>
                    <xs:element ref="description" minOccurs="0"/>
                    <xs:element ref="name"/>
                    <xs:element name="label" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Short human-readable label for this object, for human
                                interface display. </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute ref="gml:id" use="prohibited"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>
